home *** CD-ROM | disk | FTP | other *** search
- Path: itssrv1.ucsf.edu!usenet
- From: Aneil Mallavarapu <mallav@itsa.ucsf.edu>
- Newsgroups: comp.lang.c++
- Subject: overriding non-virtual functions
- Date: Mon, 08 Apr 1996 12:10:49 -0700
- Organization: UCSF, ITS
- Message-ID: <316964B9.F50@itsa.ucsf.edu>
- NNTP-Posting-Host: mitchisonlab-pc1.ucsf.edu
- Mime-Version: 1.0
- Content-Type: text/plain; charset=us-ascii
- Content-Transfer-Encoding: 7bit
- X-Mailer: Mozilla 2.01 (Win16; I)
-
- I need to override a non-virtual function declared in a base class.
-
- Some of the code is non-modifiable, and I have denoted it NM<name>.
-
- Here's my problem:
-
- 1) the base class (NMBaseClass) contains a function, NMfunc(). It is not
- virtual.
-
- 2) Another function (NMCallIt) takes a pointer to the base class and uses it to
- call NMfunc().
-
- 3) I derive a new class (MyClass) from the base class.
-
- 4) I want to pass MyClass to NMCallIt, but I want NMCallIt to use my own
- version of NMfunc(). Which I'll provide in the MyClass declaration.
-
- Is this possible? I have written this out in code to make it clearer:
-
-
- // I cannot modify this code:
-
- class NMBaseClass // non modifiable base class
- {
- void NMfunc(); // not a virtual function!
- }
- NMBaseClass::NMfunc()
- {
- ...
- }
-
- NMCallIt(NMBaseClass* pNMBC) // non modifiable function
- {
- ...
- pNMBC->NMfunc();
- ...
- }
-
-
- // I can change this code:
-
- class MyClass : NMBaseClass
- {
- void NMfunc(); // I want to use this to override
- // NMBaseClass::NMfunc()
- }
-
- void MyClass::NMfunc()
- {
- // my code ...
- }
-
-
- main()
- {
- MyClass myobject;
-
- NMCallIt( (NMBaseClass*)&myobject );
-
- // NMCallIt calls NMBaseClass::NMfunc()
- // But, I want it to call MyClass::NMfunc()
- }
-
- Thanks for any help
-
- Aneil Mallavarapu (mallav@itsa.ucsf.edu)
-